package ru.vt;

import ru.chezclif.lern.conread.Preconditions;
import ru.vt.data.Config;
import ru.vt.utils.BeanUtils;

/**
 * @author Vit
 * Страница редактирования конфигов
 */
public class EditConfigRightBean {

    /**
     * Проежуточный конфиг для манипуляций
     */
    private Config deltaConfig = null;

    /**
     * Название конфига
     */
    private String configName = "";

    /**
     * Позиция конфига, скопированного в deltaConfig, из хранилища
     */
    private int positionOfSavedConfig=-1;

    /**
     * Добавление модифицированного конфига в хранилище в замен старого
     */
    public void saveEditedConfig(){
        MenuLeftBean menuLeftBean = (MenuLeftBean) BeanUtils.getBean("menuleftbean");
        Preconditions.notNull(menuLeftBean);
        menuLeftBean.getLocalConfigList().remove(positionOfSavedConfig);
        menuLeftBean.getLocalConfigList().add(deltaConfig);
    }

    /**
     * Промежуточный конфиг и переменные очищаются, откат на пустую страницу в правую сторону
     */
    public void cancelReconfig() {
        this.clearSettings();
        this.goEmptyPage();
    }

    /**
     * Очистка переменных
     */
    public void clearSettings() {
        this.configName = "";
        this.deltaConfig = null;
        this.positionOfSavedConfig=-1;
    }

    /**
     * Перенаправляет на пустую страницу
     */
    private void goEmptyPage() {
        LegalBean legalBean = (LegalBean) BeanUtils.getBean("legalbean");
        Preconditions.notNull(legalBean);
        legalBean.setNowUsedPage(0);
    }

    public int getPositionOfSavedConfig() {
        return positionOfSavedConfig;
    }

    public void setPositionOfSavedConfig(int positionOfSavedConfig) {
        Preconditions.notNull(positionOfSavedConfig);
        this.positionOfSavedConfig = positionOfSavedConfig;
    }

    public String getConfigName() {
        return configName;
    }

    public void setConfigName(String configName) {
        Preconditions.notNull(configName);
        this.configName = configName;
    }

    public Config getDeltaConfig() {
        return deltaConfig;
    }

    public void setDeltaConfig(Config deltaConfig) {
        this.deltaConfig = deltaConfig;
    }
}
